fix acpi_dmar_zap/reinstate() (fixes S3 regression)
authorTomasz Wroblewski <tomasz.wroblewski@citrix.com>
Wed, 23 Jan 2013 09:31:04 +0000 (10:31 +0100)
committerTomasz Wroblewski <tomasz.wroblewski@citrix.com>
Wed, 23 Jan 2013 09:31:04 +0000 (10:31 +0100)
commit529d5731e40e179e396397c633e10316a850044e
tree11e8507629429669ee00f8f4e93af056dfc15c50
parent00b70689c193b9cccb1fac3c3764bed77e152c4e
fix acpi_dmar_zap/reinstate() (fixes S3 regression)

Fix S3 regression introduced by cs 23013:65d26504e843 (ACPI: large
cleanup). The dmar virtual pointer returned from acpi_get_table cannot
be safely stored away and used later, as the underlying
acpi_os_map_memory / __acpi_map_table functions overwrite the mapping
causing it to point to different tables than dmar (last fetched table is
used). This subsequently causes acpi_dmar_reinstate() and
acpi_dmar_zap() to write data to wrong table, causing its corruption and
problems with consecutive s3 resumes.

Added a new function to fetch ACPI table physical address, and
establishing separate static mapping for dmar_table pointer instead of
using acpi_get_table().

Signed-off-by: Tomasz Wroblewski <tomasz.wroblewski@citrix.com>
Added call to acpi_tb_verify_table(). Fixed page count passed to
map_pages_to_xen(). Cosmetic changes.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/acpi/tables/tbxface.c
xen/drivers/passthrough/vtd/dmar.c
xen/include/acpi/acpixf.h